#!/bin/bash
# CMDB 停止服务脚本

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'

# 获取脚本所在目录的绝对路径
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

LOG_DIR="$SCRIPT_DIR/logs"
BACKEND_PID_FILE="$LOG_DIR/backend.pid"
FRONTEND_PID_FILE="$LOG_DIR/frontend.pid"

echo -e "${CYAN}=========================================="
echo "   CMDB - 停止服务"
echo -e "==========================================${NC}"
echo ""

# 停止后端
if [ -f "$BACKEND_PID_FILE" ]; then
    BACKEND_PID=$(cat "$BACKEND_PID_FILE")
    if kill -0 $BACKEND_PID 2>/dev/null; then
        echo -e "${YELLOW}🛑 停止后端服务 (PID: $BACKEND_PID)...${NC}"
        kill $BACKEND_PID
        sleep 2
        # 强制杀死
        if kill -0 $BACKEND_PID 2>/dev/null; then
            kill -9 $BACKEND_PID 2>/dev/null
        fi
        rm -f "$BACKEND_PID_FILE"
        echo -e "${GREEN}✓ 后端服务已停止${NC}"
    else
        echo -e "${YELLOW}⚠️  后端服务未运行${NC}"
        rm -f "$BACKEND_PID_FILE"
    fi
else
    echo -e "${YELLOW}⚠️  未找到后端进程ID文件${NC}"
fi

# 停止前端
if [ -f "$FRONTEND_PID_FILE" ]; then
    FRONTEND_PID=$(cat "$FRONTEND_PID_FILE")
    if kill -0 $FRONTEND_PID 2>/dev/null; then
        echo -e "${YELLOW}🛑 停止前端服务 (PID: $FRONTEND_PID)...${NC}"
        kill $FRONTEND_PID
        sleep 2
        # 强制杀死
        if kill -0 $FRONTEND_PID 2>/dev/null; then
            kill -9 $FRONTEND_PID 2>/dev/null
        fi
        rm -f "$FRONTEND_PID_FILE"
        echo -e "${GREEN}✓ 前端服务已停止${NC}"
    else
        echo -e "${YELLOW}⚠️  前端服务未运行${NC}"
        rm -f "$FRONTEND_PID_FILE"
    fi
else
    echo -e "${YELLOW}⚠️  未找到前端进程ID文件${NC}"
fi

# 清理可能残留的进程
echo ""
echo -e "${YELLOW}🧹 清理残留进程...${NC}"
pkill -f "daphne.*backend.asgi" 2>/dev/null && echo -e "${GREEN}✓ 清理后端残留进程${NC}" || true
pkill -f "vite.*frontend" 2>/dev/null && echo -e "${GREEN}✓ 清理前端残留进程${NC}" || true

echo ""
echo -e "${GREEN}✓ 所有服务已停止${NC}"
echo ""
